1. Technical Field
This invention generally relates to computers and data processing and more specifically relates to computer communications and data transmission.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
One way computers have become more powerful is in their ability to xe2x80x9cnetwork,xe2x80x9d or communicate, with other computers. A computer typically sends and receives data over a network of communications links using a combination of network interface hardware and software, which provides a logical and physical link to the network. The network interface hardware serves to transmits electrical and/or optical signals over the telecommunications lines. The network interface software supports the transfer of data by performing functions such as establishing connections with remote computer systems, routing the data to designated recipients, and converting data from one format to another.
For a typical computer-to-computer information transfer, a fairly standard procedure may be used to establish a connection between two computers which are geographically or logically separated from each other. Initially, the computer seeking to establish the connection sends a communications request to another computer. Incoming communications requests generally include information parameters that are specific for a given client and that may vary from client to client. For example, some parameters may define origination and destination numbers, provide additional addressing information, specify a standard protocol to be used to process messages, identify the data throughput of the network, or specify whether the prospective communication will contain audio, video, or other forms of data. This information is used both to identify the owner of an incoming request and to negotiate specific parameters for a successful connection and information transfer. Once the communications request has been received and processed by the network interface of the destination computer, the actual data or message may be transferred to the intended recipient within the destination computer system.
A typical recipient of an incoming communications request may be any type of software program or process within the destination computer system, such as an application software program, systems software program, a utility program, or a subroutine. Alternatively, a recipient may be a software program or process outside the destination computer system, which shares use of the destination computer system""s network interface. In more general terms, a recipient of an incoming communications request may be any network interface xe2x80x9cclient,xe2x80x9d or, more simply, a client.
In most common applications, an incoming communications request from a remote computer system is routed by the network interface software to all possible clients logically associated with the destination computer system. The various clients analyze or interpret the contents of the communications request and, individually, decide whether or not they are the intended recipient of the request. The client who is the intended recipient xe2x80x9cownsxe2x80x9d the communications request. Once the intended recipient has been identified, that recipient then provides information to the network interface software to allow the network interface software to negotiate specific parameters about the proposed connection with the remote computer which initiated the request. After negotiating the specific parameters for the desired connection, the two computers establish a logical connection, which makes a channel available for the transmission of client data.
Although this procedure is very common and has been used somewhat successfully, it is not without limitations and shortfalls. For example, for a given communication request, the network interface software does not know to which client an incoming communications request belongs until one of the clients identifies itself as the owner. A client knows that it owns a given communications request when specific values in specific fields of the communications request match predetermined identifiers for each client. When these predetermined values match, the client informs the network interface software to accept the incoming call on its behalf. Therefore, using this method, each client must decipher all incoming communications requests until the correct recipient is found. This procedure is time consuming, very inefficient, and very complicated for the clients.
Determining ownership of incoming communications requests is further complicated for clients because not all types of communications requests use similar formatting. Multiple complex formatting rules govern how to search the information contained within a given incoming communications request. For example, if a given client wants to determine whether a given communications request allows voice, that client must understand the complex rules related to transmitting voice data. This means that each client must be knowledgeable about the format of all the possible types of requests that can be received by the destination computer system. If individual clients are not programmed to correctly process all types of requests, a client may inadvertently intercept or ignore a communications request and communication errors can result.
For example, misinterpretation of an incoming communications request can result in a given client mistakenly identifying itself as the owner of the request. The mistake may preclude the establishment of a valid communication connection or link between a remote sender and the correct recipient in a destination computer system. Another result of misinterpreting a communications request can be the abnormal termination of a client, possibly disabling network transmissions to and from that client. These erroneous results occur because all types of communications requests are routed to all clients of the destination computer system""s network interface. As more types of communications requests are sent to the same destination computer system, these problems in connection establishment procedures increase in frequency and severity.
An approach to handling problems associated with presently known connection establishment procedures is to attempt to program each client to correctly process each type of communications request that may be received by the destination computer. While technically feasible, the programming of each individual client significantly increases system complexity. More troublesome, however, is that as new types of communications standards are created, continual modification of all clients may be required in order to prevent communication processing errors.
New communications processing standards will continue to cause problems as clients continue to make independent determinations of call ownership. The repetitive modification of communications request processing capabilities in existing clients will increase the programming labor required to support communications. These added programming requirements translate directly to higher costs, delayed implementation of new communications software, and unnecessary constraints in the mix of clients that can be serviced by a given computer system. Without a more effective means for establishing connections for data communications, further process improvements and implementation of new communications techniques will be unnecessarily limited.
According to a preferred embodiment of the present invention, a method and an apparatus for efficiently and accurately processing incoming connection establishment requests is disclosed. The present invention assigns the network interface software, not the clients, to the task of determining ownership of incoming communications requests. Upon receiving an incoming request, the network interface software matches the request to identifying information for each of the clients provided ahead of time by the clients. From this information, the network interface software can determine the correct recipient, establish a call connection on behalf of the owning client, inform the client about the incoming call, and about the connection that has been established.
The present invention eliminates the need for clients to have detailed knowledge of how different types of communications requests are formatted, because incoming communications requests are no longer routed all clients. Clients no longer need to parse incoming communication requests and attempt to determine whether an incoming call is intended for them. As a result, incoming call processing is greatly simplified for each client. Thus, the present invention eliminates the problem of clients mistakenly identifying the ownership of incoming calls. The methods of the present invention will also ultimately shorten the adoption time and costs of implementing new types of communications requests, procedures and protocols, since existing clients will not have to be analyzed and potentially modified with each new type of communications request.